/*
  自己搞的日志库
*/

#pragma once

#include <stdio.h>
#include <time.h>
#include <unistd.h>

#define LOG_BASE(fmt, ...)                                                                  \
    do                                                                                 \
    {                                                                                  \
        time_t timep;                                                                  \
        time(&timep);                                                                  \
        struct tm *p = gmtime(&timep);                                                 \
        printf("[%02d:%02d:%02d %d %s:%d]" fmt "\n", p->tm_hour, p->tm_min, p->tm_sec, \
               getpid(), __FILE__, __LINE__, ##__VA_ARGS__);                           \
        fflush(stdout);                                                                \
    } while (0)

#define LOG_FATAL(fmt, ...)                \
    do                                     \
    {                                      \
        LOG_BASE("[FATAL]" fmt, ##__VA_ARGS__); \
        exit(-1);                          \
    } while (0)

#define LOG_ERROR(fmt, ...)                \
    do                                     \
    {                                      \
        LOG_BASE("[ERROR]" fmt, ##__VA_ARGS__); \
    } while (0)

#define LOGD(fmt, ...)                     \
    do                                     \
    {                                      \
        LOG_BASE("[     ]" fmt, ##__VA_ARGS__); \
    } while (0)
